package com.iwuyc.tools.commons.system;

/**
 * 运行时信息工具类
 *
 * @author Neil
 * @since 2024-06-07
 */
public class RuntimeInfoUtil {
    private RuntimeInfoUtil() {
    }

    /**
     * 获得JVM最大内存
     *
     * @return 最大内存
     * @author Neil
     * @since 2024-06-07
     */
    public static long getMaxMemory() {
        return Runtime.getRuntime().maxMemory();
    }

    /**
     * 获得JVM已分配内存
     *
     * @return 已分配内存
     */
    public static long getTotalMemory() {
        return Runtime.getRuntime().totalMemory();
    }

    /**
     * 获得JVM已分配内存中的剩余空间
     *
     * @return 已分配内存中的剩余空间
     */
    public static long getFreeMemory() {
        return Runtime.getRuntime().freeMemory();
    }

    /**
     * 获得JVM最大可用内存
     *
     * @return 最大可用内存
     */
    public static long getUsableMemory() {
        final Runtime runtime = Runtime.getRuntime();
        return runtime.maxMemory() - runtime.totalMemory() + runtime.freeMemory();
    }
}
